/**
 * @filename:DocumentInfoService 2025-04-27
 * @project starhub-schema  V1.0
 */
package com.starhub.engine.document.service;

import com.starhub.common.sys.user.LoginUser;
import com.starhub.engine.document.entity.DocumentInfo;
import com.starhub.engine.document.request.DocumentInfoBsRequest;
import com.starhub.engine.document.result.DocumentDealListResult;
import com.starhub.engine.document.result.DocumentDealResult;

import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * @Description:(附件管理服务层)
 * @version: V1.0
 * @author: 孙赛赛-sss
 * 
 */
public interface DocumentInfoService {

    /**
     * 新增
     * 
     * @param user
     * @param document
     * @return
     */
    DocumentDealListResult addDocumentInfo(MultipartFile[] files, LoginUser user, DocumentInfo document);

    Map<String, Object> downloadFile(Long fileId, LoginUser user);

    /**
     * 更新
     * 
     * @param user
     * @param document
     * @return
     */
    DocumentDealResult updateDocumentInfo(LoginUser user, DocumentInfo document);

    /**
     * 基本信息获取
     * 
     * @param user
     * @param id
     * @return
     */
    DocumentDealResult getDocumentInfoInfo(LoginUser user, Long id);

    /**
     * 根据文件Id获取文件内容
     * 
     * @param user
     * @param id
     * @return
     */
    DocumentDealResult getContentByFileId(LoginUser user, Long id);


    /*
     * 根据文件Id获取文件HTML
     * 
     * @param user
     * @param id
     * @return
     */
    DocumentDealResult getHtmlByFileId(LoginUser user, Long id);

    /**
     * html转文档
     * 
     * @param documentInfoBsRequest
     * @return
     */
    DocumentDealResult convertHtml2Word(LoginUser user, DocumentInfoBsRequest documentInfoBsRequest);

    /**
     * 根据id删除，此方法为真实删除
     * 
     * @param user
     * @param ids
     */
    DocumentDealResult deleteDocumentInfoRecord(LoginUser user, String ids);

    /**
     * 列表查询
     * 
     * @param user
     * @param params
     */
    DocumentDealListResult getDocumentInfoList(LoginUser user, Map<String, Object> params);

    /**
     * 分页查找目录下的附件
     * 
     * @param documentInfoBsRequest
     * @return
     */
    DocumentDealListResult getDocumentListByDir(DocumentInfoBsRequest documentInfoBsRequest);

    /**
     * 高级HTML转DOCX - 支持完整的样式保留
     * 
     * @param user    当前用户
     * @param request 包含HTML内容和文件信息的请求对象
     * @return 转换结果
     */
    DocumentDealResult convertHtmlToDocxAdvanced(LoginUser user, DocumentInfoBsRequest request);

}
